package com.example.art.chapter3.one.one_three

import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Canvas
import android.icu.lang.UCharacter.GraphemeClusterBreak.L
import android.util.AttributeSet
import android.util.Log
import android.view.MotionEvent
import android.view.View
import android.view.ViewConfiguration

/**
 * Created by 舍长 on 2019/4/8
 * describe:滑动最小距离
 */
class TouchSlopDemo : View {

    constructor(context: Context?) : super(context)

    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
        //系统识别滑动最小距离
        val touchSlop = ViewConfiguration.get(context).scaledTouchSlop
        //px转dp
        val dpUnit = px2dip(context, touchSlop.toFloat())
        //
        Log.d("hello", "最终获取到的px值：$touchSlop")
        //
        Log.d("hello", "最终获取到的do值:$dpUnit")
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    private fun px2dip(context: Context, pxValue: Float): Int {
        val scale = context.resources?.displayMetrics?.density
        return (pxValue / scale!! + 0.5f).toInt()
    }

    @SuppressLint("ClickableViewAccessibility")
    override fun onTouchEvent(event: MotionEvent): Boolean {
        when (event.action) {
            //手指刚接触屏幕
            MotionEvent.ACTION_DOWN -> {
                Log.d("hello", "手指刚接触屏幕")
                return true
            }
            //手指在屏幕上移动
            MotionEvent.ACTION_MOVE ->{
                Log.d("hello", "手指在屏幕上移动")
                return true
            }
            //手指在屏幕上松开的一瞬间
            MotionEvent.ACTION_UP ->{
                Log.d("hello", "手指在屏幕上松开的一瞬间")
                return true
            }
        }
        return super.onTouchEvent(event)
    }
}